use utoipa::OpenApi;
use crate::models::*;
use crate::routes::health::HealthResponse;

#[derive(OpenApi)]
#[openapi(
    paths(
        crate::routes::health::health_check,
        crate::routes::callback::verify_url,
        crate::routes::callback::handle_message,
        crate::routes::reminder::handle_reminder,
    ),
    components(
        schemas(
            HealthResponse,
            WeChatMessage,
            WeChatMessageFrom,
            WeChatMessageText,
            WeChatResponse,
            wechat::WeChatResponseText,
            WeChatEncryptedRequest,
        )
    ),
    tags(
        (name = "health", description = "健康检查相关接口"),
        (name = "wechat", description = "企业微信回调接口"),
        (name = "reminder", description = "提醒业务接口"),
    ),
    info(
        title = "RemindMe API",
        version = "1.0.0",
        description = "RemindMe 智能提醒助手 API 文档",
        contact(
            name = "API Support",
        )
    ),
)]
pub struct ApiDoc;
